package com.stjb.furns.entity;

import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Set;

/**
 * @author situ
 * @version 1.0
 * @date 2025/5/28 20:11
 * @Description: 包含多个CarItem
 */
public class Cart {

    //用于存放item (购物车里面单行)
    private HashMap<Integer, CartItem> items = new HashMap<>();

    /**
     * 判断购物车是否为空
     *
     * @return
     */
    public boolean isEmpty() {
        return items.size() == 0;
    }

    /**
     * 清空购物车
     */
    public void clean() {
        items.clear();
    }

    /**
     * 根据id删除购物车商品
     *
     * @param id
     */
    public void delItem(int id) {
        items.remove(id);
    }


    /**
     * 根据传入参数修改购物车数量
     *
     * @param id
     * @param count
     */
    public void updateCount(int id, int count) {

        CartItem item = items.get(id);
        if (item != null) {//找到CarItem
            //更新数量
            item.setCount(count);
            //更新价格
            item.setTotalPrice(item.getPrice().multiply(new BigDecimal(item.getCount())));

        }

    }


    public BigDecimal getTotalPrice() {
        BigDecimal careTotalPrice = new BigDecimal(0);
        //遍历
        Set<Integer> keys = items.keySet();
        for (Integer id : keys) {
            CartItem item = items.get(id);
            careTotalPrice = careTotalPrice.add(item.getTotalPrice());
        }
        return careTotalPrice;
    }

    public HashMap<Integer, CartItem> getItems() {
        return items;
    }

    public int getTotalCount() {

        //购物车商品的总数量
        int totalCount = 0;
        //通过迭代器计算
        Set<Integer> keys = items.keySet();
        for (Integer id : keys) {
            totalCount += ((CartItem) items.get(id)).getCount();
        }

        return totalCount;
    }


    //t添加家居
    public void addItem(CartItem cartItem) {

        CartItem item = items.get(cartItem.getId());
        if (item == null) {//当前购物车 没有这个 item对象
            items.put(cartItem.getId(), cartItem);
        } else {
            //购物车有这个商品
            item.setCount(item.getCount() + 1);//数量加
            item.setTotalPrice(item.getTotalPrice().multiply(new BigDecimal(item.getCount())));//计算总价
        }
    }

    @Override
    public String toString() {
        return "Cart{" +
                "items=" + items +
                '}';
    }
}
